It has become increasingly common to download data from a network. For instance, updates to software or even complete applications, operating systems, or other software may be available for download from a network. Therefore, large amounts of data may be downloaded from hosts (e.g., servers or the like). As such, it may be advantageous to provide a high-quality connection between a client and a host (e.g., a connection with high transfer speed, low latency, and few errors) to facilitate efficient downloading of a large quantity of data.
In an effort by network administrators to provide such reliable, high-speed network connections, data may be made available on a plurality of hosts. For instance, these hosts may have substantially identical data sets available for download, thus providing for redundant data availability. Hosts having substantially identical data available for download are commonly referred to as mirrors. In this regard, in the event one mirror is unavailable, the data may still be downloaded from an alternate mirror on the network.
Because the mirrors may be at different geographic locations and different locations in the network, network topology and network conditions associated with each of the mirrors may be different. Furthermore, these conditions may be different for each particular client attempting to download data from the mirrors. Accordingly, different clients in the network may experience different connection conditions with respect to the same mirror because of network topology or network conditions between the client and mirror. In turn, the selection of the mirrors from which data is downloaded may have an effect on the quality of the download.
However, when selecting a mirror from which to download data, previous systems have failed to provide a way of dynamic intelligent selection of mirrors. For instance, in some prior systems a user may be presented with a list of each available mirror and the user may be required to select a mirror the user would like to use for downloading data. In such instances, the user may not be provided with any additional information on which to base a selection other than a listing of the available mirrors. Many users lack the knowledge required for determining which mirror represents an optimal mirror from which data can be downloaded. Thus, the result may be naive decisions regarding selection of a mirror. That is, the mirror selection may be random or fail to take into account current network conditions or network topology. This problem is exacerbated considering the determination of an optimal mirror often involves knowledge of the location of the client in the network relative to the available mirrors. Furthermore, network conditions may be variable such that a selection of an optimal mirror at a first instance may not be the same at a second instance.
Furthermore, even if a user does have the required knowledge to determine which mirror is an optimal mirror from which to download data, previous systems often require the selection of a mirror to be permanently set (or set until the client is reset). As such, these systems may not take into account changes in the performance or topology of the network. Furthermore, if the client changes location in the network, previous systems may not allow for a change in mirror selection. In this regard, a static mirror selection may provide a suboptimal connection at the new location in the network. The mirror originally selected may continue to be used for downloads despite changes in the network that may result in a different mirror being the optimal mirror from which to download data.
Another approach used by prior systems includes benchmarking known mirrors using a synthetic workload. In this regard, these systems may download an otherwise useless portion of data simply to benchmark the speeds at which the useless portion of data was downloaded from the available mirrors. These prior systems may be operative to set the mirror from which the otherwise useless portion of data was downloaded as the selected mirror. However, these prior systems may include that the mirror selection is static for at least the duration of the transaction. In this regard, fluctuations in network performance and errors from the mirrors are not taken into account. If the performance of the chosen mirror degrades after selection of the mirror or other network conditions change after the mirror is selected, the user may be stuck with the selection despite the changes in the network.
Additionally, a system employing synthetic workloads is suboptimal because it requires the client to perform superfluous downloads of data that are in turn used only to benchmark the speed of the available mirrors. That is, the superfluous downloads have no other purpose aside from benchmarking the speeds of the mirrors. Thus, the workload of the client is increased while the optimal mirrors may not have been selected in light of fluctuations in network performance.